1. Field of the Invention
The present invention relates to computer graphics including culling operations using a graphics processing unit.
2. Background
A wide variety of applications rely on computer graphics to generate images. An image is made up of an array of picture elements (pixels) or fragments and can be displayed on a display unit, such as, a monitor, screen or cathode ray tube. Many different types of computing devices with graphics capabilities are used to generate images. Such computing devices use graphics processing. The computational workload in graphics processing systems is generally split between a central processing unit (CPU) and a graphics processing unit (GPU). A combination of software, firmware and/or hardware may be used to implement graphics processing. For example, graphics processing, including rendering can be carried out in a graphics card, graphics subsystem, graphics processor, graphics or rendering pipeline, and/or a graphics application programming interface (API), such as OpenGL.
In recent years, there has been a dramatic increase in the processing power of GPUs, which are now typically able to distribute rendering computations over a number of parallel hardware pipelines. This has led to the transition of several stages of the rendering pipeline from the CPU to one or more GPUs. For example, per-vertex transformations and lighting may now be done on a GPU. At the same time, GPUs have become more and more flexible, allowing user-provided code to be executed at certain stages of the traditional rendering pipeline. However, a number of operations related to the generation of three-dimensional images are still typically performed on the CPU, or on multiple CPUs, and have not yet transitioned onto the GPU. Examples of such operations include computations generically referred to as “culling.” Culling operations are typically carried out in the CPU for each rendered frame, in order to determine which portions of the database are visible, and thus should be submitted to the GPU for rendering. Culling operations may also include further processing of visible portions of the database, including, for example, level of detail selection or billboard orientation computations.
Increasing demands are being made upon graphics processing. These demands include realism, speed and cost. Realistic images are desired to be rendered at real-time, interactive rates. Such requirements are computationally intensive. It is beneficial then, to make the most efficient use of the computational abilities in both the CPU and the GPU. The inventor has discovered a way to leverage GPUs to perform computationally intensive tasks, such as culling, thereby increasing the overall efficiency of the graphics processing. Any increases in efficiency can be directly translated to increased realism and speed, while also reducing cost.